<?php

class Application_Model_EmpresasMapper
{
	protected $_dbTable;
	
	public function setDbTable($dbTable)
    {
        if (is_string($dbTable)) {
        	//Creamos la instancia
            $dbTable = new $dbTable();
        }
        if (!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        return $this;
    }
 
    public function getDbTable()
    {
        if (null === $this->_dbTable) {
            $this->setDbTable('Application_Model_DbTable_Empreses');
        }
        return $this->_dbTable;
    }
    
	public function fetchAll($where)
	{
		$resultSet = $this->getDbTable()->fetchAll($where, 'titulo ASC');
		
		$entries = array();
				
		foreach ($resultSet as $row) {
			$empresa = new Application_Model_Empresas();
			$empresa->setId_empresa($row->id_empresa)
					->setTitulo($row->titulo)
					->setTexto($row->texto)
					->setImagen($row->imagen)
					->setImagen_tipo($row->imagen_tipo)
					->setDireccion($row->direccion)
					->setActividad($row->cp)
					->setLocalidad($row->localidad)
					->setTelefono($row->telefono)
					->setFax($row->fax)
					->setEmail($row->email);
			$entries[] = $empresa;
		}
		return $entries;
	}
	
	public function find($id, Application_Model_Empresas $empresa)
    {
        $result = $this->getDbTable()->find($id);
        if (0 == count($result)) {
            return;
        }
        $row = $result->current();
        $empresa->setId_empresa($row->id_empresa)
                ->setTitulo($row->titulo)
                ->setTexto($row->texto)
                ->setImagen($row->imagen)
                ->setImagen_tipo($row->imagen_tipo)
                ->setDireccion($row->direccion)
                ->setActividad($row->actividad)
                ->setCp($row->cp)
                ->setLocalidad($row->localidad)
                ->setTelefono($row->telefono)
                ->setFax($row->fax)
                ->setEmail($row->email);
    }
    
	public function save(Application_Model_Empresas $empresa)
    {
        $data = array('id_empresa'  => $empresa->getId_empresa(),
            		  'titulo'   	=> $empresa->getTitulo(),
            		  'texto' 	 	=> $empresa->getTexto(),
        			  'imagen'		=> $empresa->getImagen(),
        			  'imagen_tipo'	=> $empresa->getImagen_tipo(),
        			  'direccion'	=> $empresa->getDireccion(),
        			  'actividad'	=> $empresa->getActividad(),
        			  'cp'	 		=> $empresa->getCp(),
        			  'localidad'	=> $empresa->getLocalidad(),
					  'telefono'	=> $empresa->getTelefono(),
        			  'fax'	 		=> $empresa->getFax(),
        			  'email'		=> $empresa->getEmail()
        );
                
        if (null === ($id = $empresa->getId_empresa())) {        	
            unset($data['id_empresa']);
            $this->getDbTable()->insert($data);            
        } else {
            $this->getDbTable()->update($data, array('id_empresa = ?' => $id));
        }
    }
    
    public function delete($id)
    {
    	$this->getDbTable()->delete("id_empresa = $id");
    }
}

